import { getUserQrcode, getUserAuditInfo } from '@/api/user'
import { showToast, showConfirmDialog } from 'vant'

/**
 * 检查用户收款码状态
 * @param {Function} routerPush 路由跳转函数
 * @returns {Promise<boolean>} 是否满足下单条件
 */
export const checkQrcodeStatus = async (routerPush) => {
  try {
    // 获取用户收款码信息
    const qrcodeResponse = await getUserQrcode()
    const qrcodeData = qrcodeResponse.data || qrcodeResponse
    
    // 检查是否上传了收款码
    if (!qrcodeData.bank_qrcode_url) {
      await showQrcodeRequiredDialog('请先上传收款码', routerPush)
      return false
    }
    
    // 获取审核状态
    const auditResponse = await getUserAuditInfo()
    console.log('审核状态API响应:', auditResponse)
    
    if (auditResponse.success) {
      const auditData = auditResponse.data || {}
      const status = auditData.status || ''
      console.log('审核状态值:', status)
      console.log('审核数据:', auditData)
      
      // 检查审核状态
      if (status === 'pending') {
        await showQrcodeRequiredDialog('您的收款码正在审核中，请等待审核完成后再下单', routerPush)
        return false
      }
      
      if (status === 'rejected') {
        await showQrcodeRequiredDialog('您的收款码审核被拒绝，请重新完善收款码信息', routerPush)
        return false
      }
      
      if (status === 'approved') {
        console.log('审核状态检查通过，允许下单')
        return true // 审核通过，可以下单
      }
      
      // 如果状态不是预期的值，也显示调试信息
      console.log('未知审核状态:', status, '完整响应:', auditResponse)
    } else {
      console.log('审核状态API调用失败:', auditResponse)
    }
    
    // 如果没有审核记录，检查是否有基本信息
    if (!qrcodeData.merchant_name && !qrcodeData.real_name) {
      await showQrcodeRequiredDialog('请先完善收款码信息（商户名）', routerPush)
      return false
    }
    
    // 如果没有审核记录，说明是新用户，需要先提交审核
    await showQrcodeRequiredDialog('请先提交收款码审核申请', routerPush)
    return false
    
  } catch (error) {
    console.error('检查收款码状态失败:', error)
    await showQrcodeRequiredDialog('收款码状态检查失败，请稍后重试', routerPush)
    return false
  }
}

/**
 * 显示收款码要求对话框
 * @param {string} message 提示信息
 * @param {Function} routerPush 路由跳转函数
 */
const showQrcodeRequiredDialog = async (message, routerPush) => {
  try {
    await showConfirmDialog({
      title: '收款码信息不完整',
      message: `${message}，是否前往完善？`,
      confirmButtonText: '去完善',
      cancelButtonText: '取消'
    })
    
    // 用户确认后跳转到收款码管理页面
    if (routerPush) {
      routerPush('/my-qrcode')
    } else {
      // 如果没有传入路由函数，使用window.location
      window.location.href = '/my-qrcode'
    }
    
  } catch (error) {
    if (error !== 'cancel') {
      console.error('显示收款码要求对话框失败:', error)
    }
  }
}

/**
 * 检查用户收款码状态（简化版本，用于快速检查）
 * @returns {Promise<{valid: boolean, message: string}>}
 */
export const quickCheckQrcode = async () => {
  try {
    const qrcodeResponse = await getUserQrcode()
    const qrcodeData = qrcodeResponse.data || qrcodeResponse
    
    // 检查基本信息
    if (!qrcodeData.bank_qrcode_url) {
      return {
        valid: false,
        message: '请先上传收款码'
      }
    }
    
    // 检查审核状态
    const auditResponse = await getUserAuditInfo()
    console.log('快速检查-审核状态API响应:', auditResponse)
    
    if (auditResponse.success) {
      const auditData = auditResponse.data || {}
      const status = auditData.status || ''
      console.log('快速检查-审核状态值:', status)
      console.log('快速检查-审核数据:', auditData)
      
      switch (status) {
        case 'approved':
          console.log('快速检查-审核状态检查通过')
          return { valid: true, message: '' }
        case 'pending':
          return {
            valid: false,
            message: '收款码审核中，请等待审核完成'
          }
        case 'rejected':
          return {
            valid: false,
            message: '收款码审核被拒绝，请重新完善'
          }
        default:
          console.log('快速检查-未知审核状态:', status, '完整响应:', auditResponse)
          return {
            valid: false,
            message: '请先提交收款码审核申请'
          }
      }
    } else {
      console.log('快速检查-审核状态API调用失败:', auditResponse)
    }
    
    return {
      valid: false,
      message: '请先提交收款码审核申请'
    }
    
  } catch (error) {
    console.error('快速检查收款码状态失败:', error)
    return {
      valid: false,
      message: '收款码状态检查失败'
    }
  }
} 